home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1999 March
/
EnigmA AMIGA RUN 35 (1999)(G.R. Edizioni)(IT)[!][issue 1999-03].iso
/
earcd
/
devel
/
msqllib
/
example
/
monitor
/
monitor.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-01-01
|
7KB
|
228 lines
/*
msql.library monitor example
©1998 Christophe Sollet (cfc@iname.com)
This monitor example list all msql.library function call.
*/
#include <exec/types.h>
#include <exec/memory.h>
#include <proto/exec.h>
#include <proto/msql.h>
#include <utility/hooks.h>
#include <utility/tagitem.h>
#include <dos/dos.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
struct Hook *hook;
struct MsgPort *port;
struct Library *MsqlBase;
struct HMessage
{
struct Message msg;
struct HookMessage *hmsg;
};
ULONG __saveds __asm HookFunc(register __a0 struct Hook *hook, register __a2 APTR object, register __a1 APTR message)
{
struct HMessage *hm;
struct MsgPort *rp;
if(hm = AllocMem(sizeof(struct HMessage), MEMF_CLEAR))
{
if(rp = CreateMsgPort())
{
hm->msg.mn_Node.ln_Type = NT_MESSAGE;
hm->msg.mn_Length = sizeof(struct HMessage);
hm->msg.mn_ReplyPort = rp;
hm->hmsg = message;
PutMsg(port, (struct Message *) hm);
WaitPort(rp);
GetMsg(rp);
DeleteMsgPort(rp);
}
FreeMem(hm, sizeof(struct HMessage));
}
return NULL;
}
main()
{
struct HMessage *hm;
char buffer[80];
if(MsqlBase = OpenLibrary("msql.library", 4))
{
if(port = CreateMsgPort())
{
if(hook = AllocVec(sizeof(struct Hook), MEMF_CLEAR))
{
hook->h_Entry = (HOOKFUNC) HookFunc;
if(MsqlAddMHook(hook, TAG_DONE))
{
BOOL fin = FALSE;
while(!fin)
{
ULONG sigrevd = Wait((1L << port->mp_SigBit) | SIGBREAKF_CTRL_C);
if(sigrevd & SIGBREAKF_CTRL_C)
fin = TRUE;
else
{
while(hm = (struct HMessage *) GetMsg(port))
{
if(hm->hmsg->type == FCH_ENTER)
strcpy(buffer, "0x%x-->%s"); else strcpy(buffer, "0x%x<--%s");
switch(hm->hmsg->id)
{
case MFT_AllocConnection :
printf(buffer, hm->hmsg->task, "MsqlAllocConnection()");
break;
case MFT_FreeConnection :
printf(buffer, hm->hmsg->task, "MsqlFreeConnection()");
break;
case MFT_GetErrMsg :
printf(buffer, hm->hmsg->task, "MsqlGetErrMsg()");
break;
case MFT_Connect :
printf(buffer, hm->hmsg->task, "MsqlConnect()");
break;
case MFT_SelectDB :
printf(buffer, hm->hmsg->task, "MsqlSelectDB()");
break;
case MFT_Query :
printf(buffer, hm->hmsg->task, "MsqlQuery()");
break;
case MFT_CreateDB :
printf(buffer, hm->hmsg->task, "MsqlCreateDB()");
break;
case MFT_DropDB :
printf(buffer, hm->hmsg->task, "MsqlDropDB()");
break;
case MFT_Shutdown :
printf(buffer, hm->hmsg->task, "MsqlShutdown()");
break;
case MFT_GetProtoInfo :
printf(buffer, hm->hmsg->task, "MsqlGetProtoInfo()");
break;
case MFT_ReloadAcls :
printf(buffer, hm->hmsg->task, "MsqlReloadAcls()");
break;
case MFT_GetServerInfo :
printf(buffer, hm->hmsg->task, "MsqlGetServerInfo()");
break;
case MFT_GetHostInfo :
printf(buffer, hm->hmsg->task, "MsqlGetHostInfo()");
break;
case MFT_Close :
printf(buffer, hm->hmsg->task, "MsqlClose()");
break;
case MFT_DataSeek :
printf(buffer, hm->hmsg->task, "MsqlDataSeek()");
break;
case MFT_FieldSeek :
printf(buffer, hm->hmsg->task, "MsqlFieldSeek()");
break;
case MFT_FreeResult :
printf(buffer, hm->hmsg->task, "MsqlFreeResult()");
break;
case MFT_FetchRow :
printf(buffer, hm->hmsg->task, "MsqlFetchRow()");
break;
case MFT_FetchField :
printf(buffer, hm->hmsg->task, "MsqlFetchField()");
break;
case MFT_ListDBs :
printf(buffer, hm->hmsg->task, "MsqlListDBs()");
break;
case MFT_ListTables :
printf(buffer, hm->hmsg->task, "MsqlListTables()");
break;
case MFT_ListFields :
printf(buffer, hm->hmsg->task, "MsqlListFields()");
break;
case MFT_ListIndex :
printf(buffer, hm->hmsg->task, "MsqlListIndex()");
break;
case MFT_StoreResult :
printf(buffer, hm->hmsg->task, "MsqlStoreResult()");
break;
case MFT_LoadConfigFile :
printf(buffer, hm->hmsg->task, "MsqlLoadConfigFile()");
break;
case MFT_GetIntConfOld :
printf(buffer, hm->hmsg->task, "MsqlGetIntConfOld()");
break;
case MFT_GetCharConfOld :
printf(buffer, hm->hmsg->task, "MsqlGetCharConfOld()");
break;
case MFT_GetIntConf :
printf(buffer, hm->hmsg->task, "MsqlGetIntConf()");
break;
case MFT_GetCharConf :
printf(buffer, hm->hmsg->task, "MsqlGetCharConf()");
break;
case MFT_GetServerStats :
printf(buffer, hm->hmsg->task, "MsqlGetServerStats()");
break;
case MFT_CopyDB :
printf(buffer, hm->hmsg->task, "MsqlCopyDB()");
break;
case MFT_MoveDB :
printf(buffer, hm->hmsg->task, "MsqlMoveDB()");
break;
case MFT_UnixTimeToDate :
printf(buffer, hm->hmsg->task, "MsqlUnixTimeToDate()");
break;
case MFT_UnixTimeToTime :
printf(buffer, hm->hmsg->task, "MsqlUnixTimeToTime()");
break;
case MFT_GetSequenceInfo :
printf(buffer, hm->hmsg->task, "MsqlGetSequenceInfo()");
break;
case MFT_DateToUnixTime :
printf(buffer, hm->hmsg->task, "MsqlDateToUnixTime()");
break;
case MFT_TimeToUnixTime :
printf(buffer, hm->hmsg->task, "MsqlTimeToUnixTime()");
break;
case MFT_SumTimes :
printf(buffer, hm->hmsg->task, "MsqlSumTimes()");
break;
case MFT_DateOffset :
printf(buffer, hm->hmsg->task, "MsqlDateOffset()");
break;
case MFT_DiffTimes :
printf(buffer, hm->hmsg->task, "MsqlDiffTimes()");
break;
case MFT_DiffDates :
printf(buffer, hm->hmsg->task, "MsqlDiffDates()");
break;
default:
printf("Unknown function call!");
break;
}
printf("\n");
ReplyMsg((struct Message *) hm);
}
}
}
MsqlRemMHook(hook);
}
FreeVec(hook);
}
while(hm = (struct HMessage *) GetMsg(port)) ReplyMsg((struct Message *) hm);
DeleteMsgPort(port);
}
CloseLibrary(MsqlBase);
}
}